gint i, j;
GMenuModel *menu;
gboolean shown_by_shell;
- GdkWindowTypeHint type_hint;
+ gboolean is_sovereign_window;
toplevel = gtk_widget_get_toplevel (widget);
if (!gtk_widget_is_toplevel (toplevel))
else
menu = NULL;
- type_hint = gtk_window_get_type_hint (window);
+ is_sovereign_window = (!gtk_window_get_modal (window) &&
+ gtk_window_get_transient_for (window) == NULL &&
+ gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL);
tokens = g_strsplit (layout_desc, ":", 2);
if (tokens)
AtkObject *accessible;
if (strcmp (t[j], "icon") == 0 &&
- type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ is_sovereign_window)
{
button = gtk_image_new ();
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
}
else if (strcmp (t[j], "menu") == 0 &&
menu != NULL &&
- type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ is_sovereign_window)
{
button = gtk_menu_button_new ();
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon), "process-stop-symbolic", GTK_ICON_SIZE_MENU);
}
else if (strcmp (t[j], "minimize") == 0 &&
- type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ is_sovereign_window)
{
button = gtk_button_new ();
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
}
else if (strcmp (t[j], "maximize") == 0 &&
gtk_window_get_resizable (window) &&
- type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ is_sovereign_window)
{
const gchar *icon_name;
gboolean maximized = gtk_window_is_maximized (window);
gtk_grab_remove (widget);
}
+ update_window_buttons (window);
+
g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_MODAL]);
}
priv->transient_parent_group = TRUE;
}
}
+
+ update_window_buttons (window);
}
/**